package com.springboot.fram.core.date;

import java.text.SimpleDateFormat;

/**
 * 时间的SimpleDateFormat格式化缓存
 * <pre>
 * 封装常用转换格式,避免线程不安全的问题。
 * </pre>
 *
 * @author madman
 */
public final class DateThreadLocals {

  /**
   * 标准日期时间格式化器
   */
  public static final ThreadLocal<SimpleDateFormat> DATETIME = new ThreadLocal<SimpleDateFormat>() {
    @Override
    synchronized protected SimpleDateFormat initialValue() {
      return new SimpleDateFormat(DatePattern.DATETIME.getPattern());
    }
  };
  /**
   * 标准日期（不含时间）格式化器
   */
  public static final ThreadLocal<SimpleDateFormat> DATE = new ThreadLocal<SimpleDateFormat>() {
    @Override
    synchronized protected SimpleDateFormat initialValue() {
      return new SimpleDateFormat(DatePattern.DATE.getPattern());
    }
  };
  /**
   * 标准时间格式化器
   */
  public static final ThreadLocal<SimpleDateFormat> TIME = new ThreadLocal<SimpleDateFormat>() {
    @Override
    synchronized protected SimpleDateFormat initialValue() {
      return new SimpleDateFormat(DatePattern.TIME.getPattern());
    }
  };
  /**
   * 带反斜线标准日期格式化器
   */
  public static final ThreadLocal<SimpleDateFormat> DATE_BACKSLASHES = new ThreadLocal<SimpleDateFormat>() {
    @Override
    synchronized protected SimpleDateFormat initialValue() {
      return new SimpleDateFormat(DatePattern.DATE_BACKSLASHES.getPattern());
    }
  };
  /**
   * 带反斜线标准日期格式化器
   */
  public static final ThreadLocal<SimpleDateFormat> DATETIME_ZH = new ThreadLocal<SimpleDateFormat>() {
    @Override
    synchronized protected SimpleDateFormat initialValue() {
      return new SimpleDateFormat(DatePattern.DATETIME_ZH.getPattern());
    }
  };
  /**
   * 标准日期文件名格式化器
   */
  public static final ThreadLocal<SimpleDateFormat> DATETIME_FILE = new ThreadLocal<SimpleDateFormat>() {
    @Override
    synchronized protected SimpleDateFormat initialValue() {
      return new SimpleDateFormat(DatePattern.DATETIME_FILE.getPattern());
    }
  };

}
